package com.ruoyi.ly.service;


import com.ruoyi.ly.domain.Project;
import com.ruoyi.ly.domain.SpaceBan;
import com.ruoyi.ly.domain.dto.PageWorkSpaceDTO;
import com.ruoyi.ly.domain.dto.WorkSpaceAddDTO;
import com.ruoyi.ly.domain.dto.WorkSpaceUpdateDTO;
import com.ruoyi.ly.domain.vo.WorkSpaceAddBanVO;
import com.ruoyi.ly.domain.vo.WorkSpaceAddFloorVO;
import com.ruoyi.ly.domain.vo.WorkSpaceDetailVO;
import com.ruoyi.ly.utils.PageResult;
import org.apache.ibatis.annotations.Param;

import java.util.List;


public interface WorkSpaceService {

    /**
     * 分页查询
     * @param pageWorkSpaceDTO
     * @return
     */
    PageResult pageQuery(PageWorkSpaceDTO pageWorkSpaceDTO);

    /**
     * 工作区删除
     * @param siteGroupId
     * @return
     */
    void delete(Long siteGroupId);

    /**
     * 创建工作区
     * @param workSpaceAddDTO
     * @return
     */
    void insert(WorkSpaceAddDTO workSpaceAddDTO);

    /**
     * 根据工作区siteGroupId查询楼栋
     * @param siteGroupId
     * @return
     */
    WorkSpaceDetailVO selectById(Long siteGroupId);

    /**
     * 修改工作区信息
     * @param workSpaceUpdateDTO
     * @return
     */
    void update(WorkSpaceUpdateDTO workSpaceUpdateDTO);

    /**
     * 根据项目id查询所属楼栋
     * @param projectId
     * @return
     */
    List<WorkSpaceAddBanVO> selectByProjectId(Long projectId);

    /**
     * 根据项目id和楼栋id查询所属楼层
     * @param projectId banId
     * @return
     */
    List<WorkSpaceAddFloorVO> selectByProjectAndBanId(@Param("projectId")Long projectId, @Param("banId")Long banId);

    /**
     * 查询所有的楼栋
     * @param
     * @return
     */
    List<SpaceBan> selectAllBan();

    /**
     * 查询所有的项目
     * @param
     * @return
     */
    List<Project> selectAllProject();
}
